#ifndef _CATEGORYBLOCK_H_
#define _CATEGORYBLOCK_H_

#include <QString>
#include <QHash>

class EntryBlock;
class QXmlStreamWriter;

class CategoryBlock
{
public:
	/// Constructor por defecto
	CategoryBlock() {}

	/// Destructor
	~CategoryBlock();

	/// Establece el nombre de la categoría
	void setName(const QString& name)
		{ _name = name; }

	/// Devuelve el nombre de la categoría
	QString getName() const
		{ return _name; }

	/// Añade una nueva entrada a la categoría
	void addEntry(int number, EntryBlock* entry)
		{ _entries.insert(number, entry); }

	/// Devuelve una entrada concreta dada su número de entrada
	EntryBlock* getEntry(int entryNumber)
		{ return _entries.contains(entryNumber) ? _entries.value(entryNumber) : NULL; }

	/// Devuelve el listado de entradas de la categoría
	const QHash<int, EntryBlock*> getEntries()
		{ return _entries; }

	void dump(QXmlStreamWriter& writer);

private:
	QString _name; ///< Nombre del Category Block 
	QHash<int, EntryBlock*> _entries; /// Listado de entradas
};

#endif // _CATEGORYBLOCK_H_

